import { reqCartList,reqDeleteCartById,reqUpdateCheckedById } from "@/api"
const state={
    cartList:[]
}
const mutations={
    GETCARTLIST(state,cartList){
        state.cartList=cartList
    }
}
const actions={
    //获取购物车数据
  async  getCartList({commit}){
       let result= await reqCartList()
       if(result.code==200){
           commit("GETCARTLIST",result.data)
       }
       
    },
    //删除购物车某一个产品
  async deleteCartListBySkuId({commit}, skuId) {
    let result = await reqDeleteCartById(skuId);
    if (result.code == 200) {
      return "ok";
    } else {
      return Promise.reject(new Error("faile"));
    }
  },
  //修改购物车某一个产品的选中状态
  async updateCheckedById({commit},{skuId,isChecked}){
  let result=  await reqUpdateCheckedById(skuId,isChecked)
  if(result.code==200){
    return'ok'
  }else{
    return Promise.reject(new Error('faile'))
  }
  },
  //删除全部勾选的产品
  deleteAllCheckedCart({dispatch,getters}){
    //context小仓库
    //获取购物车中全部的产品
    let PromiseAll=[]
    //PromiseAll是个数组里面都是promise对象，有一个对象不成功就都不成功
    getters.cartList.cartInfoList.forEach(item=>{
      let promise =item.isChecked==1?dispatch('deleteCartListBySkuId',item.skuId):''
      //将每一次返回的Promise添加到数组
      PromiseAll.push(promise)
    })
    //数组里面都成功，返回的结果才成功
    return Promise.all(PromiseAll)
  },
  //修改全部产品的状态
  updateAllCartIsChecked({dispatch,state},isChecked){
     //数组
     let promiseAll=[]
     state.cartList[0].cartInfoList.forEach((item)=>{
       let promise=dispatch("updateCheckedById",{
         skuId:item.skuId,
         isChecked,
       })
       promiseAll.push(promise)
     })
     //最终返回结果
     return Promise.all(promiseAll)
  }
}
const getters={
    cartList(state){
        return state.cartList[0]||{}
    },
    
   
}
export default{
    state,
    mutations,
    actions,
    getters
}